/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.mtc.dgac.licencias.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import pe.gov.mtc.dgac.licencias.bean.ProcedimientoTO;
import pe.gov.mtc.dgac.licencias.bean.ProcesoTO;
import pe.gov.mtc.dgac.licencias.bean.Usuario;
import pe.gov.mtc.dgac.licencias.exception.TransactionException;
import pe.gov.mtc.dgac.licencias.service.ProcedimientoService;
import pe.gov.mtc.dgac.licencias.service.ProcesoService;
import pe.gov.mtc.dgac.licencias.util.Utiles;

/**
 *
 * @author elvis
 */
@Controller
@Scope("session")
public class ProcedimientosController {

    @Autowired
    private ProcesoService procesoService;
    @Autowired
    private ProcedimientoService procedimientoService;
    
    @RequestMapping(value="/calidad/lprocedimientos.htm")
    public String lprocedimientos(@RequestParam("codigo") int id, HttpServletRequest request,ModelMap model) {
        System.out.println("Proceso id " + id);
        ProcesoTO proceso = null;
        List<ProcedimientoTO> lprocedimientos = new ArrayList<ProcedimientoTO>();
        ProcedimientoTO proc = new ProcedimientoTO();
        try {
            proceso = procesoService.obtenerProcesos(id);
            proc.setCodProceso(proceso);
            proc.setCodProcedimiento(-1l);
            lprocedimientos = procedimientoService.listarProdedimientos(proc);
        } catch (TransactionException ex) {
            ex.printStackTrace();
        }
        request.getSession().setAttribute("id_proceso", proceso);
        model.put("lprocedimientos",  lprocedimientos);
        model.put("bprocedimiento",  proc);
        System.out.println("calidad/lprocedimientos");
        return "calidad/lprocedimientos";
    }
    
    @RequestMapping(value="/calidad/bprocedimientos.htm",method=RequestMethod.POST)
    public String bprocedimientos(@Valid ProcedimientoTO bprocedimiento, BindingResult result, HttpServletRequest request,ModelMap model) {
        if(request.getSession().getAttribute("id_proceso")==null){
            System.out.println("No se encuentra el Proceso asociado");
            model.put("msgError","No se encuentra el Proceso asociado");
        }
        List<ProcedimientoTO> lprocedimientos = new ArrayList<ProcedimientoTO>();
        ProcedimientoTO proc = new ProcedimientoTO();
        try {
            lprocedimientos = procedimientoService.listarProdedimientos(bprocedimiento);
        } catch (TransactionException ex) {
            ex.printStackTrace();
        }
        model.put("lprocedimientos",  lprocedimientos);
        model.put("bprocedimiento",  proc);
        System.out.println("calidad/bprocedimientos");
        return "calidad/lprocedimientos";
    }
    
    @RequestMapping("/calidad/nprocedimientos.htm")
    public String nprocedimientos(HttpServletRequest request,ModelMap model) {
        System.out.println("calidad/nprocedimiento");
        if(request.getSession().getAttribute("id_proceso")==null){
            System.out.println("No se encuentra el Proceso asociado");
            model.put("msgError","No se encuentra el Proceso asociado");
        }
        ProcedimientoTO proc = new ProcedimientoTO();
        proc.setCodProceso(  (ProcesoTO)request.getSession().getAttribute("id_proceso") );
        model.put("nprocedimiento",proc );
        return "calidad/nprocedimiento";
    }
    
    @RequestMapping(value="/calidad/rprocedimientos.htm",method=RequestMethod.POST)
    public String rprocedimientos(@Valid ProcedimientoTO nprocedimiento, BindingResult result,HttpServletRequest request,ModelMap model) {
        try {
            
            System.out.println("rprocedimientos");
            if(request.getSession().getAttribute("id_proceso")==null){
                System.out.println("No se encuentra el Proceso asociado");
                model.put("msgError","No se encuentra el Proceso asociado");
            }
            
           nprocedimiento.setFecActualizacion( Utiles.stringToDate(request.getParameter("fecActualizacion"), "dd/MM/yyyy"));
           nprocedimiento.setFecAprobacion( Utiles.stringToDate(request.getParameter("fecAprobacion"), "dd/MM/yyyy"));
           Usuario usr = (Usuario) request.getSession().getAttribute("usr");
           nprocedimiento.setUsuarioCrea(usr.getLogin());
           nprocedimiento.setFecCrea(new Date());
            System.out.println("cod proceso " +nprocedimiento.getCodProceso().getCodProceso() );
           System.out.println("cod p "+request.getParameter("fecAprobacion"));
           System.out.println("cod p "+request.getParameter("fecActualizacion"));
           
           procedimientoService.insertarProcedimiento(nprocedimiento);
           System.out.println("calidad/rprocedimientos");
           return lprocedimientos( ((ProcesoTO)request.getSession().getAttribute("id_proceso")).getCodProceso().intValue() , request, model);
           
        } catch (Exception e) {
            model.put("nprocedimiento", nprocedimiento);
            e.printStackTrace();
            return "calidad/nprocedimiento";
        }
        
    }

    @RequestMapping(value="/calidad/editProcedimiento.htm")
    public String editProcedimiento(@RequestParam("codigo") int id, HttpServletRequest request,ModelMap model) {
        System.out.println("eliminar " + id);
        ProcedimientoTO proc = new ProcedimientoTO();
        proc.setCodProceso(new  ProcesoTO(1L));
        model.put("nprocedimiento",proc );
        System.out.println("calidad/nprocedimiento");
        return "calidad/nprocedimiento";
    }
    //
    @RequestMapping(value="/calidad/verProcedimiento.htm")
    public String verProcedimiento(@RequestParam("codigo") int id, HttpServletRequest request,ModelMap model) {
        System.out.println("eliminar " + id);
        ProcedimientoTO proc = new ProcedimientoTO();
        proc.setCodProceso(new  ProcesoTO(1L));
        model.put("dprocedimiento",proc );        
        System.out.println("calidad/dprocedimiento");
        return "calidad/dprocedimiento";
    }
    //
    @RequestMapping(value="/calidad/delProcedimiento.htm")
    public String delProcedimiento(@RequestParam("codigo") int id, HttpServletRequest request,ModelMap model) {
        System.out.println("eliminar " + id);
        model.put("mensaje", "Elemento eliminado");
        System.out.println("calidad/lprocedimientos");
        return "calidad/lprocedimientos";
    }
   
}
